﻿//using System;
//using System.Data;
//using System.Text;
//using System.Collections.Generic;
//using System.Linq;
//using System.Web;
//using System.Web.UI;
//using System.Web.UI.WebControls;
////using HRM.Common;
////
////using NHTC.DataAccess;

//namespace HRM.Web
//{
//    partial class ClassGenerate : UserControl//UserControlBase
//    {

//        protected void Page_Init(object sender, System.EventArgs e)
//        {
//            this.Load += Page_Load;
//            cmdGenClass.Click += cmdGenerate_Click;
//            cmdGenPackage.Click += cmdGenPackage_Click;
//            cmdGenTable.Click += cmdGenTable_Click;
//        }

//        protected void Page_Load(object sender, System.EventArgs e)
//        {
//            if (!this.IsPostBack)
//            {
//                try
//                {
//                    cboTableOracle.DataTextField = "Table_Name";
//                    cboTableOracle.DataValueField = "Table_Name";
//                    cboTableOracle.DataSource = SystemController.Instance().Table_List();
//                    cboTableOracle.DataBind();
//                }
//                catch (Exception ex)
//                {

//                }

//                try
//                {
//                    cboTableSQL.DataTextField = "Table_Name";
//                    cboTableSQL.DataValueField = "Table_Name";
//                    cboTableSQL.DataSource = Globals.Reader2Table(SqlHelper.ExecuteReader(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], CommandType.Text, "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES" + " WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME<>'sysdiagrams'" + " ORDER BY TABLE_NAME"));
//                    cboTableSQL.DataBind();
//                }
//                catch { }
//            }
//        }

//        protected void cmdGenerate_Click(object sender, System.EventArgs e)
//        {
//            try
//            {
//                DataTable dt = null;

//                try
//                {
//                    dt = SystemController.Instance().Table_Structure(cboTableOracle.SelectedValue);
//                }
//                catch (Exception ex)
//                {
//                    dt = Globals.Reader2Table(SqlHelper.ExecuteReader(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], "App_Table_Structure", cboTableSQL.SelectedValue));
//                }


//                string sTableName = null;
//                string sClassName = null;
//                string sColName = null;
//                string sColType = null;
//                string sPK = null;
//                StringBuilder sb_Main = new StringBuilder();
//                StringBuilder sb_Prop = new StringBuilder();
//                StringBuilder sb_Null = new StringBuilder();
//                //
//                sTableName = ClassName(cboTableOracle.SelectedValue);
//                sClassName = sTableName.Replace("Dic_", "");
//                sClassName = sClassName.Replace("_Info", "");
//                sb_Main.AppendLine("using System;");
//                sb_Main.AppendLine("using System.Data;");
//                sb_Main.AppendLine("using NCTS.Common;");
//                sb_Main.AppendLine("using NHTC.DataAccess;");
//                sb_Main.AppendLine("");
//                sb_Main.AppendLine("namespace COS2.BusinessLogic");
//                sb_Main.AppendLine("{");
//                sb_Main.AppendLine("public class " + sClassName + "_Info:Standard_Info {");
//                sb_Null.AppendLine("public " + sClassName + "_Info() {");
//                foreach (DataColumn col in dt.Columns)
//                {
//                    if (col.AutoIncrement == true)
//                    {
//                        sPK = col.ColumnName;
//                    }
//                    //sColName = col.ColumnName
//                    sColName = ClassName(col.ColumnName);
//                    sColType = col.DataType.Name;
//                    if (sColType == "String" && col.MaxLength == 1 && !col.AllowDBNull) //Auto fix Oracle CHAR(1) to Boolean
//                    {
//                        sColType = "Boolean";
//                    }
//                    else if (sColType == "Double" || sColType == "Single") sColType = "Decimal";//Auto fix Oracle number
//                    //
//                    if (col.AllowDBNull && !("String,DateTime,Date,Boolean,Byte".Contains(sColType)))
//                    {
//                        sb_Null.AppendLine("\t" + "_" + sColName + "=(" + sColType + ")Null.SetNullValue(_" + sColName + ");");
//                    }
//                    //
//                    sb_Prop.AppendLine("");
//                    sb_Prop.AppendLine("private " + sColType + " _" + sColName + ";");
//                    //
//                    sb_Prop.AppendLine("public " + sColType + " " + sColName + " {");
//                    sb_Prop.AppendLine("\t" + "get {return _" + sColName + ";}");
//                    sb_Prop.AppendLine("\t" + "set {_" + sColName + "=value;}");
//                    sb_Prop.AppendLine("}");
//                }
//                sb_Null.AppendLine("}");
//                sb_Main.AppendLine("");
//                sb_Main.AppendLine(sb_Null.ToString());
//                sb_Main.AppendLine(sb_Prop.ToString() + "}");
//                sb_Main.AppendLine("");
//                //
//                sb_Main.AppendLine("public class " + sClassName + "_Controller:Standard_Controller {");
//                //Contructor Singleton
//                sb_Main.AppendLine("#region \"Contructor\"");
//                sb_Main.AppendLine("private static " + sClassName + "_Controller " + "_instance;");
//                sb_Main.AppendLine("protected " + sClassName + "_Controller(){}");
//                sb_Main.AppendLine("protected void Dispose(){");
//                sb_Main.AppendLine("_instance = null;");
//                sb_Main.AppendLine("}");
//                sb_Main.AppendLine("private static object _syncLock = new object();");
//                sb_Main.AppendLine("public static " + sClassName + "_Controller" + " Instance() {");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 1) + "if (_instance==null){");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 2) + "lock (_syncLock) {");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 3) + "if (_instance==null)");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 4) + "_instance = new " + sClassName + "_Controller();");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 2) + "}");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 1) + "}");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 1) + "return _instance;");
//                sb_Main.AppendLine("}");
//                sb_Main.AppendLine("public static " + sClassName + "_Controller Instance(String transName)");
//                sb_Main.AppendLine("{");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 1) + "if (!String.IsNullOrEmpty(transName)) {");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 2) + sClassName + "_Controller _instanceTrans = new " + sClassName + "_Controller();");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 2) + "_instanceTrans.Trans_Name = transName;");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 2) + "return _instanceTrans;");
//                sb_Main.AppendLine("\t" + "}");
//                sb_Main.AppendLine("\t" + "else");
//                sb_Main.AppendLine(Globals.String_Repeat("\t", 2) + "return Instance();");
//                sb_Main.AppendLine("}");
//                sb_Main.AppendLine("#endregion");
//                //
//                sb_Main.AppendLine("");
//                sb_Main.AppendLine("public const String cs_Table_Name=\"" + sTableName + "\";");
//                sb_Main.AppendLine("");
//                //
//                string sProcName = null;
//                string sProcPre = null;
//                string sFuncName = null;
//                sProcPre = sTableName.Replace("Dic_", "").Replace("App_", "");
//                sProcPre = "PCK_" + sProcPre.ToUpper() + "." + sProcPre;
//                //
//                if (string.IsNullOrEmpty(sPK))
//                {
//                    sPK = SystemController.Instance().Table_KeyColumn(sTableName, "PK_%");
//                }
//                string sPKName = null;
//                string sPKType = null;
//                if (!(string.IsNullOrEmpty(sPK)))
//                {
//                    sPKName = ClassName(sPK);
//                }
//                if (!(string.IsNullOrEmpty(sPK)) && !(sPK.Contains(";")))
//                {
//                    sPKType = dt.Columns[sPK].DataType.Name;
//                    if (sTableName.StartsWith("Dic_"))
//                    {
//                        //List
//                        sFuncName = "List";
//                        sb_Main.AppendLine("public DataTable " + sFuncName + "() {");
//                        sb_Main.AppendLine("\t" + "return DataConnect.ExecuteTable(DataConnect.WorkingConnect, Procedure_Name(cs_Table_Name,\"" + sFuncName + "\"));");
//                        sb_Main.AppendLine("}");
//                        sb_Main.AppendLine("");
//                    }
//                    else
//                    {
//                        //Browse
//                        sFuncName = "Browse";
//                        sb_Main.AppendLine("public DataTable " + sFuncName + "(");
//                        sb_Main.AppendLine("\t" + "String condition");
//                        sb_Main.AppendLine("\t" + ",String orderBy");
//                        sb_Main.AppendLine("\t" + ",Int32 pageSize");
//                        sb_Main.AppendLine("\t" + ",Int32 pageIndex");
//                        sb_Main.AppendLine("\t" + ",out Int32 totalRow)");
//                        sb_Main.AppendLine("{");
//                        sb_Main.AppendLine("\t" + "totalRow = 0;");
//                        sb_Main.AppendLine("\t" + "return Globals.DataPager(DataConnect.ExecuteDataset(DataConnect.WorkingConnect, Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")");
//                        sb_Main.AppendLine("\t" + ", condition");
//                        sb_Main.AppendLine("\t" + ", orderBy");
//                        sb_Main.AppendLine("\t" + ", pageSize");
//                        sb_Main.AppendLine("\t" + ", pageIndex");
//                        sb_Main.AppendLine("\t" + "), ref totalRow);");
//                        sb_Main.AppendLine("}");
//                        sb_Main.AppendLine("");
//                        //Search
//                        sFuncName = "Search";
//                        sb_Main.AppendLine("public DataTable " + sFuncName + "() {");
//                        sb_Main.AppendLine("\t" + "return DataConnect.ExecuteTable(DataConnect.WorkingConnect, Procedure_Name(cs_Table_Name,\"" + sFuncName + "\"));");
//                        sb_Main.AppendLine("}");
//                        sb_Main.AppendLine("");
//                    }
//                }
//                //Insert
//                sFuncName = "Insert";
//                sProcName = "_" + sFuncName;
//                sb_Main.AppendLine("public void " + sFuncName + "(" + sClassName + "_Info objInfo){");
//                if (!(string.IsNullOrEmpty(sPK)) && !(sPK.Contains(";")))
//                {
//                    if (sPKType == "String")
//                    {
//                        sb_Main.AppendLine("\t" + "this.ExecuteNonQuery(Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")");
//                        sb_Main.AppendLine("\t" + ",objInfo." + sPKName);
//                    }
//                    else
//                    {
//                        sb_Main.AppendLine("\t" + "objInfo." + sPKName + " =" + sPKType + ".Parse(this.ExecuteScalar(Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")");
//                    }
//                }
//                else
//                {
//                    sb_Main.AppendLine("this.ExecuteNonQuery(Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")");
//                }
//                foreach (DataColumn col in dt.Columns)
//                {
//                    if (col.ColumnName == sPK)
//                    {
//                        continue;
//                    }
//                    sColName = ClassName(col.ColumnName);
//                    if (col.AllowDBNull)
//                    {
//                        sb_Main.AppendLine("\t" + ",Globals.DB_GetNull(objInfo." + sColName + ")");
//                    }
//                    else
//                    {
//                        sb_Main.AppendLine("\t" + ",objInfo." + sColName + "");
//                    }
//                }
//                if (sPKType != "String" && !sPK.Contains(";"))
//                {
//                    sb_Main.Append("\t" + ").ToString()");
//                }
//                sb_Main.AppendLine(");");
//                sb_Main.AppendLine("}");
//                sb_Main.AppendLine("");
//                if (!(string.IsNullOrEmpty(sPK)) && !(sPK.Contains(";")))
//                {
//                    //Dim sPKType As String = dt.Columns(sPK).DataType.Name
//                    //Update
//                    sFuncName = "Update";
//                    sProcName = "_" + sFuncName;
//                    sb_Main.AppendLine("public void  " + sFuncName + "(" + sClassName + "_Info objInfo){");
//                    sb_Main.AppendLine("this.ExecuteNonQuery(Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")");
//                    sb_Main.AppendLine(",objInfo." + sPKName + "");
//                    foreach (DataColumn col in dt.Columns)
//                    {
//                        if (col.ColumnName == sPK)
//                        {
//                            continue;
//                        }
//                        sColName = ClassName(col.ColumnName);
//                        if (col.AllowDBNull)
//                        {
//                            sb_Main.AppendLine("\t" + ",Globals.DB_GetNull(objInfo." + sColName + ")");
//                        }
//                        else
//                        {
//                            sb_Main.AppendLine("\t" + ",objInfo." + sColName + "");
//                        }
//                    }
//                    sb_Main.AppendLine(");");
//                    sb_Main.AppendLine("}");
//                    sb_Main.AppendLine("");
//                    //Delete
//                    sFuncName = "Delete";
//                    sProcName = sProcPre + "_" + sFuncName;
//                    sb_Main.AppendLine("public void " + sFuncName + "(" + sPKType + " " + char.ToLower(sPKType[0]) + sPKName + "){");
//                    sb_Main.AppendLine("\t" + "this.ExecuteNonQuery(Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")," + char.ToLower(sPKType[0]) + sPKName + ");");
//                    sb_Main.AppendLine("}");
//                    sb_Main.AppendLine("");
//                    //Select
//                    sFuncName = "SelectById";
//                    sProcName = "_" + sFuncName;
//                    sb_Main.AppendLine("public " + sClassName + "_Info " + sFuncName + "(" + sPKType + " " + char.ToLower(sPKType[0]) + sPKName + "){");
//                    sb_Main.AppendLine("\t" + "return CBO.FillObject<" + sClassName + "_Info>(DataConnect.ExecuteRow(DataConnect.WorkingConnect, Procedure_Name(cs_Table_Name,\"" + "Select" + "\")," + char.ToLower(sPKType[0]) + sPKName + "));");
//                    sb_Main.AppendLine("}");
//                }
//                else
//                {
//                    string sFK = SystemController.Instance().Table_KeyColumn(sTableName, "FK_%");
//                    if (!String.IsNullOrEmpty(sFK))
//                    {
//                        string sFKName = Globals.String_Capitalize(sFK.Replace("_", " ")).Replace(" ", "_");
//                        string sFKType = dt.Columns[sFK].DataType.Name;
//                        //Clear
//                        sFuncName = "Clear";
//                        sProcName = "_" + sFuncName;
//                        sb_Main.AppendLine("public void " + sFuncName + "(" + dt.Columns[sFK].DataType.Name + " " + char.ToLower(sFKType[0]) + sFKName + "){");
//                        sb_Main.AppendLine("\t" + "this.ExecuteNonQuery(Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")," + char.ToLower(sFKType[0]) + sFKName + ");");
//                        sb_Main.AppendLine("}");
//                        sb_Main.AppendLine("");
//                        //List
//                        sFuncName = "List";
//                        sProcName = "_" + sFuncName;
//                        sb_Main.AppendLine("public DataTable " + sFuncName + "(" + dt.Columns[sFK].DataType.Name + " " + char.ToLower(sFKType[0]) + sFKName + "){");
//                        sb_Main.AppendLine("\t" + "return DataConnect.ExecuteTable(DataConnect.WorkingConnect, Procedure_Name(cs_Table_Name,\"" + sFuncName + "\")," + char.ToLower(sFKType[0]) + sFKName + ");");
//                        sb_Main.AppendLine("}");
//                    }
//                }
//                //
//                sb_Main.AppendLine("}");
//                sb_Main.AppendLine("}");
//                //
//                txtResult.Text = sb_Main.ToString();
//            }
//            catch (Exception ex)
//            {
//                //Message_Error(Page, ex)
//                txtResult.Text = ex.Message + ex.StackTrace;
//            }
//        }

//        private void cmdGenPackage_Click(object sender, System.EventArgs e)
//        {
//            //Gen sql thay vì oracle
//            if (cboTableSQL.Items.Count > 0)
//            {
//                cmdGenProcedure_Click(null, null);
//                return;
//            }
//            //
//            DataTable dt = SystemController.Instance().Table_GetField(cboTableOracle.SelectedValue);
//            string sTableName = null;
//            string sClassName = null;
//            string sColName = null;
//            string sColType = null;
//            string sPK_Col = null;
//            string sPK_Type = null;
//            string sCol_List = null;
//            string sCol_Update = null;
//            string sParam_Def = null;
//            string sParam_List = null;
//            StringBuilder sbPackage = new StringBuilder();
//            StringBuilder sbBody = new StringBuilder();
//            //
//            bool bHasActiveField = false;
//            //
//            sTableName = Globals.String_Capitalize(cboTableOracle.SelectedValue.Replace("_", " ")).Replace(" ", "_");
//            if (sTableName.IndexOf("_") <= 2) sTableName = sTableName.Substring(0, 2).ToUpper() + sTableName.Substring(2);
//            //
//            sCol_List = "";
//            sCol_Update = "";
//            sParam_Def = "";
//            sParam_List = "";
//            //
//            string sProcName = null;
//            string sProcPre = null;
//            sProcPre = ProcPrefix(sTableName);
//            //
//            try
//            {
//                sPK_Col = SystemController.Instance().Table_KeyColumn(sTableName, "PK_%");
//                string sFK_Col = SystemController.Instance().Table_KeyColumn(sTableName, "FK_%");
//                string sFK_Type = null;
//                //
//                foreach (DataRow dr in dt.Rows)
//                {
//                    sColName = InitCase(dr["COLUMN_NAME"].ToString());
//                    sColType = dr["DATA_TYPE"].ToString();//.ToLower();
//                    //If sColType.ToUpper().Contains("CHAR") Then
//                    //    If CInt(Fix(dr("DATA_LENGTH"))) > 0 Then
//                    //        sColType &= "(" & dr("DATA_LENGTH").ToString() & ")"
//                    //    Else
//                    //        sColType &= "(max)"
//                    //    End If
//                    //ElseIf sColType.ToUpper() = "DECIMAL" Then
//                    //    sColType &= "(" & dr("DATA_LENGTH").ToString() & "," & dr("DATA_SCALE").ToString() & ")"
//                    //End If
//                    //
//                    if (!(string.IsNullOrEmpty(sPK_Col)) && sColName.ToUpper() == sPK_Col.ToUpper())
//                    {
//                        sPK_Type = sColType;
//                        continue;
//                    }
//                    if (!(string.IsNullOrEmpty(sFK_Col)) && sColName.ToUpper() == sFK_Col.ToUpper())
//                    {
//                        sFK_Type = sColType;
//                    }
//                    //
//                    sCol_List += ("\r" + "\t" + "\t") + "," + sColName;
//                    sCol_Update += ("\r" + "\t" + "\t") + "," + sColName + "=p_" + sColName.ToLower();
//                    sParam_Def += ("\r" + "\t") + ",p_" + sColName.ToLower() + " IN " + sColType;
//                    sParam_List += ("\r" + "\t" + "\t") + ",p_" + sColName.ToLower();
//                    //              
//                    if (sColName.ToUpper() == "IS_ACTIVE")
//                    {
//                        bHasActiveField = true;
//                    }
//                }
//                sCol_List = "\t" + sCol_List.Substring(4);
//                sCol_Update = "\t" + sCol_Update.Substring(4);
//                sParam_Def = "\t" + sParam_Def.Substring(3);
//                sParam_List = "\t" + sParam_List.Substring(4);
//                //
//                String owner = System.Configuration.ConfigurationManager.AppSettings["DefaultSchema"];
//                sbPackage.AppendLine("CREATE OR REPLACE PACKAGE " + owner + ".PCK_" + sProcPre.ToUpper() + " AS");
//                sbBody.AppendLine("CREATE OR REPLACE PACKAGE BODY " + owner + ".PCK_" + sProcPre.ToUpper() + " AS");
//                sProcPre = Procedure_Pre(sTableName);
//                //
//                //sProcPre += "." + sProcPre
//                //
//                if (!(string.IsNullOrEmpty(sPK_Col)) && (!(sPK_Col.Contains(";"))))
//                {
//                    if (sTableName.StartsWith("Dic_"))
//                    {
//                        //List
//                        sProcName = sProcPre + "_List";
//                        //
//                        sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                        sbPackage.AppendLine("(");
//                        sbPackage.AppendLine("\t" + "p_result OUT SYS_REFCURSOR");
//                        sbPackage.AppendLine(");");
//                        //
//                        sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                        sbBody.AppendLine("(");
//                        sbBody.AppendLine("\t" + "p_result OUT SYS_REFCURSOR");
//                        sbBody.AppendLine(") IS");
//                        sbBody.AppendLine("BEGIN");
//                        sbBody.AppendLine("\t" + "OPEN p_result FOR SELECT * FROM " + sTableName.ToUpper() + ";");
//                        sbBody.AppendLine("END;");
//                        sbBody.AppendLine("");
//                    }
//                    else if (!(string.IsNullOrEmpty(sFK_Col)) && (sTableName.EndsWith("_Items") || sTableName.EndsWith("_Details")))
//                    {
//                        //List
//                        sProcName = sProcPre + "_List";
//                        //
//                        sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                        sbPackage.AppendLine("(");
//                        sbPackage.AppendLine("\t" + "p_" + sFK_Col.ToLower() + " " + sFK_Type);
//                        sbPackage.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                        sbPackage.AppendLine(");");
//                        //
//                        sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                        sbBody.AppendLine("(");
//                        sbBody.AppendLine("\t" + "p_" + sFK_Col.ToLower() + " " + sFK_Type);
//                        sbBody.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                        sbBody.AppendLine(") IS");
//                        sbBody.AppendLine("BEGIN");
//                        sbBody.AppendLine("\t" + "OPEN p_result FOR SELECT * FROM " + sTableName.ToUpper() + "");
//                        sbBody.AppendLine("\t" + "WHERE " + InitCase(sFK_Col) + "=p_" + sFK_Col.ToLower() + ";");
//                        sbBody.AppendLine("END;");
//                        sbBody.AppendLine("");
//                    }
//                    else
//                    {
//                        //Browse
//                        sProcName = sProcPre + "_Browse";
//                        //
//                        sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                        sbPackage.AppendLine("(");
//                        sbPackage.AppendLine("\t" + "p_condition IN VARCHAR2");
//                        sbPackage.AppendLine("\t" + ",p_sort IN VARCHAR2");
//                        sbPackage.AppendLine("\t" + ",p_page_size IN NUMBER");
//                        sbPackage.AppendLine("\t" + ",p_page_index IN NUMBER");
//                        sbPackage.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                        sbPackage.AppendLine("\t" + ",p_count OUT SYS_REFCURSOR");
//                        sbPackage.AppendLine(");");
//                        //
//                        sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                        sbBody.AppendLine("(");
//                        sbBody.AppendLine("\t" + "p_condition IN VARCHAR2");
//                        sbBody.AppendLine("\t" + ",p_sort IN VARCHAR2");
//                        sbBody.AppendLine("\t" + ",p_page_size IN NUMBER");
//                        sbBody.AppendLine("\t" + ",p_page_index IN NUMBER");
//                        sbBody.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                        sbBody.AppendLine("\t" + ",p_count OUT SYS_REFCURSOR");
//                        sbBody.AppendLine(") IS");
//                        sbBody.AppendLine("\t" + "p_sql varchar2(2000);");
//                        sbBody.AppendLine("\t" + "p_where varchar2(2000);");
//                        sbBody.AppendLine("\t" + "start_index NUMBER;");
//                        sbBody.AppendLine("\t" + "end_index NUMBER;");
//                        sbBody.AppendLine("BEGIN");
//                        sbBody.AppendLine("\t" + "end_index:=(p_page_index+1) * p_page_size;");
//                        sbBody.AppendLine("\t" + "start_index:=p_page_index*p_page_size;");
//                        sbBody.AppendLine("\t" + "IF p_condition IS NOT NULL THEN");
//                        sbBody.AppendLine("\t" + "\t" + "p_where:='WHERE '||p_condition;");
//                        sbBody.AppendLine("\t" + "ELSE");
//                        sbBody.AppendLine("\t" + "\t" + "p_where:='';");
//                        sbBody.AppendLine("\t" + "END IF;");
//                        //
//                        sbBody.AppendLine("\t" + "p_sql:='SELECT * FROM (");
//                        sbBody.AppendLine("\t" + "SELECT rownum as rn");
//                        sbBody.AppendLine("\t" + "\t" + ", A.*");
//                        sbBody.AppendLine("\t" + "FROM (SELECT * FROM " + sTableName.ToUpper() + " '||p_where||'");
//                        sbBody.AppendLine("\t" + "\t" + "ORDER BY '||p_sort||') A");
//                        sbBody.AppendLine("\t" + "WHERE rownum <= :end_index");
//                        sbBody.AppendLine("\t" + ") WHERE rn > :start_index';");
//                        sbBody.AppendLine("\t" + "OPEN p_result FOR p_sql USING end_index,start_index;");
//                        sbBody.AppendLine("\t" + "OPEN p_count FOR 'SELECT COUNT(*) FROM " + sTableName.ToUpper() + " '||p_where;");
//                        //
//                        sbBody.AppendLine("END;");
//                        sbBody.AppendLine("");
//                        //Search
//                        sProcName = sProcPre + "_Search";
//                        //
//                        sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                        sbPackage.AppendLine("(");
//                        sbPackage.AppendLine("\t" + "p_result OUT SYS_REFCURSOR");
//                        sbPackage.AppendLine(");");
//                        //
//                        sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                        sbBody.AppendLine("(");
//                        sbBody.AppendLine("\t" + "p_result OUT SYS_REFCURSOR");
//                        sbBody.AppendLine(") IS");
//                        sbBody.AppendLine("BEGIN");
//                        sbBody.AppendLine("\t" + "OPEN p_result FOR SELECT * FROM " + sTableName.ToUpper() + ";");
//                        sbBody.AppendLine("END;");
//                        sbBody.AppendLine("");
//                    }
//                }
//                //Insert
//                sProcName = sProcPre + "_Insert";
//                //
//                sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                sbPackage.AppendLine("(");
//                if (InsertPK(sPK_Col, sPK_Type, sFK_Col, sFK_Type))
//                {
//                    sbPackage.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " " + sPK_Type + ",");
//                }
//                sbPackage.AppendLine(sParam_Def);
//                if (!(string.IsNullOrEmpty(sPK_Col)) && !(sPK_Col.Contains(";"))) sbPackage.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                sbPackage.AppendLine(");");
//                sbPackage.AppendLine("");
//                //
//                sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                sbBody.AppendLine("(");
//                if (InsertPK(sPK_Col, sPK_Type, sFK_Col, sFK_Type))
//                {
//                    sbBody.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type + ",");
//                }
//                sbBody.AppendLine(sParam_Def);
//                if (!(string.IsNullOrEmpty(sPK_Col)) && !(sPK_Col.Contains(";"))) sbBody.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                sbBody.AppendLine(") IS");
//                if (!String.IsNullOrEmpty(sPK_Type) && sPK_Type.Contains("NUMBER") && sPK_Col != sFK_Col)
//                {
//                    sbBody.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " " + sPK_Type + ";");
//                }
//                sbBody.AppendLine("BEGIN");
//                if (!String.IsNullOrEmpty(sPK_Type) && sPK_Type.Contains("NUMBER") && sPK_Col != sFK_Col)
//                {
//                    sbBody.AppendLine("\t" + "PCK_APP.AUTO_NUMBER('" + sTableName.ToUpper() + "." + sPK_Col.ToUpper() + "'," + "p_" + sPK_Col.ToLower() + ");");
//                }
//                sbBody.AppendLine("\t" + "INSERT INTO " + sTableName.ToUpper() + "(");
//                if (!(string.IsNullOrEmpty(sPK_Col)) && !(sPK_Col.Contains(";"))) sbBody.AppendLine("\t" + "\t" + InitCase(sPK_Col) + ",");
//                sbBody.AppendLine("\t" + sCol_List);
//                sbBody.AppendLine("\t" + ") VALUES (");
//                if (!(string.IsNullOrEmpty(sPK_Col)) && !(sPK_Col.Contains(";"))) sbBody.AppendLine("\t" + "\t" + "p_" + sPK_Col.ToLower() + ",");
//                sbBody.AppendLine("\t" + sParam_List);
//                sbBody.AppendLine("\t" + ");");
//                if (!(string.IsNullOrEmpty(sPK_Col)))
//                {
//                    if (!(sPK_Col.Contains(";")))
//                    {
//                        sbBody.AppendLine("\t" + "OPEN p_result FOR SELECT p_" + sPK_Col.ToLower() + " FROM DUAL;");
//                    }
//                }
//                sbBody.AppendLine("END;");
//                sbBody.AppendLine("");
//                string sPKName = InitCase(sPK_Col);
//                if (!(string.IsNullOrEmpty(sPK_Col)) && (!(sPK_Col.Contains(";"))))
//                {
//                    //Update
//                    sProcName = sProcPre + "_Update";
//                    //
//                    sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                    sbPackage.AppendLine("(");
//                    sbPackage.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type + ",");
//                    sbPackage.AppendLine(sParam_Def);
//                    sbPackage.AppendLine(");");
//                    sbPackage.AppendLine("");
//                    //
//                    sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                    sbBody.AppendLine("(");
//                    sbBody.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type + ",");
//                    sbBody.AppendLine(sParam_Def);
//                    sbBody.AppendLine(") IS");
//                    sbBody.AppendLine("BEGIN");
//                    sbBody.AppendLine("\t" + "UPDATE " + sTableName.ToUpper() + " SET ");
//                    sbBody.AppendLine("\t" + sCol_Update);
//                    sbBody.AppendLine("\t" + "WHERE " + sPKName + "=p_" + sPK_Col.ToLower() + ";");
//                    sbBody.AppendLine("END;");
//                    sbBody.AppendLine("");
//                    //Delete
//                    sProcName = sProcPre + "_Delete";
//                    //
//                    sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                    sbPackage.AppendLine("(");
//                    sbPackage.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type);
//                    sbPackage.AppendLine(");");
//                    sbPackage.AppendLine("");
//                    //
//                    sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                    sbBody.AppendLine("(");
//                    sbBody.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type);
//                    sbBody.AppendLine(") IS");
//                    sbBody.AppendLine("BEGIN");
//                    sbBody.AppendLine("\t" + "DELETE FROM " + sTableName.ToUpper() + "");
//                    sbBody.AppendLine("\t" + "WHERE " + sPKName + "=p_" + sPK_Col.ToLower() + ";");
//                    sbBody.AppendLine("END;");
//                    //Select
//                    sProcName = sProcPre + "_Select";
//                    //
//                    sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                    sbPackage.AppendLine("(");
//                    sbPackage.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type);
//                    sbPackage.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                    sbPackage.AppendLine(");");
//                    sbPackage.AppendLine("");
//                    //
//                    sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                    sbBody.AppendLine("(");
//                    sbBody.AppendLine("\t" + "p_" + sPK_Col.ToLower() + " IN " + sPK_Type);
//                    sbBody.AppendLine("\t" + ",p_result OUT SYS_REFCURSOR");
//                    sbBody.AppendLine(") IS");
//                    sbBody.AppendLine("BEGIN");
//                    sbBody.AppendLine("\t" + "OPEN p_result FOR SELECT * FROM " + sTableName.ToUpper() + "");
//                    sbBody.AppendLine("\t" + "WHERE " + sPKName + "=p_" + sPK_Col.ToLower() + ";");
//                    sbBody.AppendLine("END;");
//                    sbBody.AppendLine("");
//                }
//                else
//                {
//                    //Clear
//                    sProcName = sProcPre + "_Clear";
//                    //
//                    sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                    sbPackage.AppendLine("(");
//                    sbPackage.AppendLine("p_" + sFK_Col.ToLower() + " IN " + sFK_Type);
//                    sbPackage.AppendLine(");");
//                    //
//                    sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                    sbBody.AppendLine("(");
//                    sbBody.AppendLine("p_" + sFK_Col.ToLower() + " IN " + sFK_Type);
//                    sbBody.AppendLine(") IS");
//                    sbBody.AppendLine("BEGIN");
//                    sbBody.AppendLine("\t" + "DELETE FROM " + sTableName.ToUpper() + "");
//                    sbBody.AppendLine("\t" + "WHERE " + sFK_Col + "=p_" + sFK_Col.ToLower() + ";");
//                    sbBody.AppendLine("END;");
//                    sbBody.AppendLine("");
//                    //List
//                    sProcName = sProcPre + "_List";
//                    //
//                    sbPackage.AppendLine("PROCEDURE " + sProcName + "");
//                    sbPackage.AppendLine("(");
//                    sbPackage.AppendLine("p_" + sFK_Col.ToLower() + " IN " + sFK_Type);
//                    sbPackage.AppendLine(",p_result OUT SYS_REFCURSOR");
//                    sbPackage.AppendLine(");");
//                    //
//                    sbBody.AppendLine("PROCEDURE " + sProcName + "");
//                    sbBody.AppendLine("(");
//                    sbBody.AppendLine("p_" + sFK_Col.ToLower() + " IN " + sFK_Type);
//                    sbBody.AppendLine(",p_result OUT SYS_REFCURSOR");
//                    sbBody.AppendLine(") IS");
//                    sbBody.AppendLine("BEGIN");
//                    sbBody.AppendLine("\t" + "OPEN p_result FOR SELECT * FROM " + sTableName.ToUpper() + "");
//                    sbBody.AppendLine("\t" + "WHERE " + sFK_Col + "=p_" + sFK_Col.ToLower() + ";");
//                    sbBody.AppendLine("END;");
//                    sbBody.AppendLine("");
//                }
//                //
//                sbPackage.AppendLine("END;");
//                sbPackage.AppendLine("/");
//                sbBody.AppendLine("END;");
//                //
//                txtResult.Text = sbPackage.ToString() + sbBody.ToString();
//            }
//            catch (Exception ex)
//            {
//                //Message_Error(ex)
//                txtResult.Text = ex.Message;
//            }
//        }

//        protected void cmdGenProcedure_Click(object sender, System.EventArgs e)
//        {
//            try
//            {
//                DataTable dt = null;

//                try
//                {
//                    dt = SystemController.Instance().Table_GetField(cboTableOracle.SelectedValue);
//                }
//                catch (Exception ex)
//                {
//                    dt = Globals.Reader2Table(SqlHelper.ExecuteReader(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], "App_Table_GetField", cboTableSQL.SelectedValue));
//                }



//                string sTableName = null;
//                string sColName = null;
//                string sColType = null;
//                string sPK_Col = null;
//                string sPK_Type = null;
//                string sCol_List = null;
//                string sCol_Update = null;
//                string sParam_Def = null;
//                string sParam_List = null;
//                StringBuilder sb = new StringBuilder();
//                //
//                bool bHasActiveField = false;
//                //
//                sTableName = cboTableSQL.SelectedValue;
//                //
//                sCol_List = "";
//                sCol_Update = "";
//                sParam_Def = "";
//                sParam_List = "";
//                //
//                string sProcName = null;
//                string sProcPre = null;
//                sProcPre = ProcPrefix(sTableName);
//                //
//                string sFK_Col = "";

//                try
//                {
//                    sPK_Col = SystemController.Instance().Table_KeyColumn(sTableName, "PK_%");
//                    sFK_Col = SystemController.Instance().Table_KeyColumn(sTableName, "FK_%");
//                }
//                catch (Exception ex)
//                {
//                    sPK_Col = Globals.Object_GetValue<string>(SqlHelper.ExecuteScalar(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], "App_Table_GetField", cboTableSQL.SelectedValue));
//                    sFK_Col = Globals.Object_GetValue<string>(SqlHelper.ExecuteScalar(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], "App_Table_GetField", cboTableSQL.SelectedValue));
//                }

//                string sFK_Type = null;
//                //
//                foreach (DataRow dr in dt.Rows)
//                {
//                    sColName = InitCase(dr["COLUMN_NAME"].ToString());
//                    sColType = dr["DATA_TYPE"].ToString().ToLower();
//                    if (sColType.ToUpper().Contains("CHAR"))
//                    {
//                        sColType += "(" + dr["DATA_LENGTH"].ToString() + ")";
//                    }
//                    else if (sColType.ToUpper() == "DECIMAL")
//                    {
//                        sColType += "(" + dr["DATA_LENGTH"].ToString() + "," + dr["DATA_SCALE"].ToString() + ")";
//                    }
//                    //
//                    if (!(string.IsNullOrEmpty(sPK_Col)) && sColName.ToUpper() == sPK_Col.ToUpper())
//                    {
//                        sPK_Type = sColType;
//                        continue;
//                    }
//                    if (!(string.IsNullOrEmpty(sFK_Col)) && sColName.ToUpper() == sFK_Col.ToUpper())
//                    {
//                        sFK_Type = sColType;
//                    }
//                    //
//                    sCol_List += "\r" + "\t" + "," + sColName;
//                    sCol_Update += "\r" + "\t" + "," + sColName + "=@" + sColName;
//                    sParam_Def += "\r" + "\t" + ",@" + sColName + " " + sColType;
//                    sParam_List += "\r" + "\t" + ",@" + sColName;
//                    //              
//                    if (sColName.ToUpper() == "IS_ACTIVE")
//                    {
//                        bHasActiveField = true;
//                    }
//                }
//                sCol_List = "\t" + sCol_List.Substring(3);
//                sCol_Update = "\t" + sCol_Update.Substring(3);
//                sParam_Def = "\t" + sParam_Def.Substring(3);
//                sParam_List = "\t" + sParam_List.Substring(3);
//                //
//                string sDBname = System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"];
//                sDBname = sDBname.Substring(sDBname.IndexOf("Initial Catalog") + "Initial Catalog".Length);
//                sDBname = sDBname.Substring(sDBname.IndexOf("=") + "=".Length);
//                if (sDBname.IndexOf(";") > 0)
//                {
//                    sDBname = sDBname.Substring(0, sDBname.IndexOf(";"));
//                }
//                sDBname = sDBname.Trim();
//                sb.AppendLine("USE [" + sDBname + "]");
//                sb.AppendLine("GO");
//                sb.AppendLine("");
//                //
//                if (!(string.IsNullOrEmpty(sPK_Col)) && !sPK_Col.Contains(";"))
//                {
//                    if (sTableName.StartsWith("Dic_"))
//                    {
//                        //List
//                        sProcName = sProcPre + "_List";
//                        sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                        sb.AppendLine("(");
//                        if (bHasActiveField)
//                        {
//                            sb.AppendLine("@Active char(1)");
//                        }
//                        sb.AppendLine(") AS");
//                        sb.AppendLine("SELECT * FROM " + sTableName);
//                        if (bHasActiveField)
//                        {
//                            sb.AppendLine("WHERE Is_Active=@Active OR @Active IS NULL");
//                        }
//                        sb.AppendLine("GO");
//                        sb.AppendLine("");
//                    }
//                    else if (!(string.IsNullOrEmpty(sFK_Col)) && (sTableName.EndsWith("_Items") || sTableName.EndsWith("_Details")))
//                    {
//                        //List
//                        sProcName = sProcPre + "_List";
//                        sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                        sb.AppendLine("(");
//                        sb.AppendLine("@" + sFK_Col + " " + sFK_Type);
//                        sb.AppendLine(") AS");
//                        sb.AppendLine("SELECT * FROM " + sTableName);
//                        sb.AppendLine("WHERE " + sFK_Col + "=@" + sFK_Col);
//                        sb.AppendLine("GO");
//                        sb.AppendLine("");
//                    }
//                    else
//                    {
//                        //Browse
//                        sProcName = sProcPre + "_Browse";
//                        sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                        sb.AppendLine("(");
//                        sb.AppendLine(") AS");
//                        sb.AppendLine("SELECT * FROM " + sTableName);
//                        sb.AppendLine("GO");
//                        sb.AppendLine("");
//                        //Search
//                        sProcName = sProcPre + "_Search";
//                        sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                        sb.AppendLine("(");
//                        sb.AppendLine(") AS");
//                        sb.AppendLine("SELECT * FROM " + sTableName);
//                        sb.AppendLine("GO");
//                        sb.AppendLine("");
//                    }
//                }
//                //Insert
//                sProcName = sProcPre + "_Insert";
//                sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                sb.AppendLine("(");
//                sb.AppendLine(sParam_Def);
//                sb.AppendLine(") AS");
//                sb.AppendLine("INSERT INTO " + sTableName + "(");
//                sb.AppendLine(sCol_List);
//                sb.AppendLine(") VALUES (");
//                sb.AppendLine(sParam_List);
//                if (!(string.IsNullOrEmpty(sPK_Col)))
//                {
//                    sb.AppendLine(")");
//                    if (!sPK_Col.Contains(";")) sb.AppendLine("SELECT SCOPE_IDENTITY()");
//                }
//                sb.AppendLine("GO");
//                sb.AppendLine("");
//                if (!(string.IsNullOrEmpty(sPK_Col)) && !sPK_Col.Contains(";"))
//                {
//                    //Update
//                    sProcName = sProcPre + "_Update";
//                    sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                    sb.AppendLine("(");
//                    sb.AppendLine("\t" + "@" + sPK_Col + " " + sPK_Type + ",");
//                    sb.AppendLine(sParam_Def);
//                    sb.AppendLine(") AS");
//                    sb.AppendLine("UPDATE " + sTableName + " SET ");
//                    sb.AppendLine(sCol_Update);
//                    sb.AppendLine("WHERE " + sPK_Col + "=@" + sPK_Col);
//                    sb.AppendLine("GO");
//                    sb.AppendLine("");
//                    //Delete
//                    sProcName = sProcPre + "_Delete";
//                    sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                    sb.AppendLine("(");
//                    sb.AppendLine("@" + sPK_Col + " " + sPK_Type);
//                    sb.AppendLine(") AS");
//                    sb.AppendLine("DELETE FROM " + sTableName);
//                    sb.AppendLine("WHERE " + sPK_Col + "=@" + sPK_Col);
//                    sb.AppendLine("GO");
//                    //Select
//                    sProcName = sProcPre + "_SelectByID";
//                    sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                    sb.AppendLine("(");
//                    sb.AppendLine("@" + sPK_Col + " " + sPK_Type);
//                    sb.AppendLine(") AS");
//                    sb.AppendLine("SELECT * FROM " + sTableName);
//                    sb.AppendLine("WHERE " + sPK_Col + "=@" + sPK_Col);
//                    sb.AppendLine("GO");
//                    sb.AppendLine("");
//                }
//                else
//                {
//                    //Clear
//                    sProcName = sProcPre + "_Clear";
//                    sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                    sb.AppendLine("(");
//                    sb.AppendLine("@" + sFK_Col + " " + sFK_Type);
//                    sb.AppendLine(") AS");
//                    sb.AppendLine("DELETE FROM " + sTableName);
//                    sb.AppendLine("WHERE " + sFK_Col + "=@" + sFK_Col);
//                    sb.AppendLine("GO");
//                    sb.AppendLine("");
//                    //List
//                    sProcName = sProcPre + "_List";
//                    sb.AppendLine("CREATE PROCEDURE " + sProcName + "");
//                    sb.AppendLine("(");
//                    sb.AppendLine("@" + sFK_Col + " " + sFK_Type);
//                    sb.AppendLine(") AS");
//                    sb.AppendLine("SELECT * FROM " + sTableName);
//                    sb.AppendLine("WHERE " + sFK_Col + "=@" + sFK_Col);
//                    sb.AppendLine("GO");
//                    sb.AppendLine("");
//                }
//                //
//                txtResult.Text = sb.ToString();
//            }
//            catch (Exception ex)
//            {
//                FormGlobals.Message_Error(ex);
//            }
//        }

//        private String Procedure_Pre(String tableName)
//        {
//            string retVal = tableName.Replace("Dic_", "").Replace("App_", "");
//            if (retVal.Length > 20 && retVal.LastIndexOf("_") < 15)
//            {
//                retVal = retVal.Substring(0, retVal.LastIndexOf("_") - 1);
//            }
//            return retVal;
//        }

//        private bool InsertPK(String sPK, String sPK_Type, String sFK, String sFK_Type)
//        {
//            return ((sPK_Type != null && sPK_Type.Contains("CHAR")) || sPK == sFK);
//        }

//        private string InitCase(string sValue)
//        {
//            if (!(sValue.Contains("_")))
//            {
//                return sValue.Substring(0, 1).ToUpper() + sValue.Substring(1).ToLower(); ;
//            }
//            string[] arr = sValue.Split('_');
//            string s = null;
//            for (int i = 0; i < arr.Length; i++)
//            {
//                s = arr[i];
//                if (s.Length < 3)
//                {
//                    //Continue For
//                }
//                arr[i] = s.Substring(0, 1).ToUpper() + s.Substring(1).ToLower();
//            }
//            return string.Join("_", arr);
//        }

//        private string ProcPrefix(string sTableName)
//        {
//            string sProcPre = sTableName; //.Replace("Dic_", "")
//            //If sProcPre.EndsWith("ies") Then
//            //    sProcPre = sProcPre.Substring(0, sProcPre.Length - 3) & "y"
//            //End If
//            //If sProcPre.EndsWith("s") AndAlso Not (sProcPre.EndsWith("ss")) Then
//            //    sProcPre = sProcPre.Substring(0, sProcPre.Length - 1)
//            //End If
//            return sProcPre;
//        }


//        private string FuncName(string sProcName)
//        {
//            return FuncName(sProcName, "");
//        }

//        private string FuncName(string sProcName, string sProPre)
//        {
//            if (sProPre != "")
//            {
//                sProcName = sProcName.Substring(sProPre.Length + 1); // + "_", "")
//            }
//            sProcName = sProcName.Replace("EB_", "");
//            return sProcName;
//        }

//        private string ClassPrefix(string sTableName)
//        {
//            string sClassName = sTableName;
//            if (sClassName.EndsWith("ies"))
//            {
//                sClassName = sClassName.Substring(0, sClassName.Length - 3) + "y";
//            }
//            if (sClassName.EndsWith("s") && !(sClassName.EndsWith("ss")))
//            {
//                sClassName = sClassName.Substring(0, sClassName.Length - 1);
//            }
//            return sClassName;
//        }

//        private string ClassName(String className)
//        {
//            return ClassName(className, 2);
//        }
//        private string ClassName(String className, Int32 firstUpcase)
//        {
//            className = Globals.String_Capitalize(className.Replace("_", " ")).Replace(" ", "_");
//            if (!className.StartsWith("Is_") && !className.StartsWith("As_") && !className.StartsWith("At_") && !className.StartsWith("To_"))
//            {
//                if (className.Contains("_") && className.IndexOf("_") <= firstUpcase) className = className.Substring(0, firstUpcase).ToUpper() + className.Substring(firstUpcase);
//            }
//            return className;
//        }

//        private void cmdGenTable_Click(object sender, System.EventArgs e)
//        {
//            string sTableName = cboTableSQL.SelectedValue;
//            DataTable dtField = Globals.Reader2Table(SqlHelper.ExecuteReader(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], CommandType.Text, "SELECT * FROM [vwApp_Table_Column]" + " WHERE TABLE_NAME='" + sTableName + "'"));
//            //
//            string sColName = null;
//            string sColType = null;
//            string sColLen = null;
//            string sColNull = null;
//            string sPK = null;
//            StringBuilder sb_Main = new StringBuilder();
//            StringBuilder sb_Prop = new StringBuilder();
//            StringBuilder sb_Null = new StringBuilder();
//            StringBuilder sb_Comment = new StringBuilder();
//            //Generate table structure
//            sPK = "";
//            for (int i = 0; i < dtField.Rows.Count; i++)
//            {
//                DataRow drField = dtField.Rows[i];
//                sColName = drField["COLUMN_NAME"].ToString();
//                if (drField["PK"].ToString() == "1")
//                {
//                    if (sPK.Length > 0)
//                    {
//                        sPK += ",";
//                    }
//                    sPK += sColName;
//                }
//                sColType = drField["Data_Type"].ToString();
//                switch (sColType)
//                {
//                    case "SMALLINT":
//                    case "TINYINT":
//                    case "INT":
//                    case "BIGINT":
//                    case "NUMERIC":
//                        sColType = "NUMBER";
//                        break;
//                    case "DATETIME":
//                        sColType = "DATE";
//                        break;
//                    case "VARCHAR":
//                        sColType = "VARCHAR2";
//                        break;
//                    default:
//                        if (sColType.EndsWith("TEXT")) sColType = sColType.Replace("TEXT", "CLOB");
//                        break;
//                }
//                sColLen = Globals.DB_GetString(drField["Data_Length"]);
//                sColNull = "";
//                if (drField["Nullable"].ToString() == "N")
//                {
//                    sColNull = " NOT NULL";
//                }
//                //
//                if (i > 0)
//                {
//                    sb_Prop.Append(",");
//                }
//                if (sColLen.Length > 0)
//                {
//                    if (sColType == "NVARCHAR")
//                    {
//                        sColType = "VARCHAR2";
//                        sColLen += " CHAR";
//                    }
//                    if (!(System.Convert.IsDBNull(drField["Data_Scale"])))
//                    {
//                        sColLen += "," + drField["Data_Scale"].ToString();
//                    }
//                    sb_Prop.AppendLine(string.Format("{0} {1}({2}){3}", sColName, sColType, sColLen, sColNull));
//                }
//                else
//                {
//                    sb_Prop.AppendLine(string.Format("{0} {1}{2}", sColName, sColType, sColNull));
//                }
//                if (!String.IsNullOrEmpty(Globals.DB_GetString(drField["Description"])))
//                {
//                    sb_Comment.AppendLine(string.Format("COMMENT ON COLUMN {0}.{1} IS '{2}';", sTableName, sColName, drField["Description"]));
//                }
//            }
//            //
//            sb_Main.AppendLine("CREATE TABLE " + sTableName + " (");
//            sb_Main.Append(sb_Prop.ToString());
//            if (!(string.IsNullOrEmpty(sPK)))
//            {
//                sb_Main.AppendLine(",CONSTRAINT " + sTableName + "_PK PRIMARY KEY" + "(" + sPK + ")" + " ENABLE");
//            }
//            sb_Main.AppendLine(");");
//            //Generate Comment
//            sb_Main.AppendLine("");
//            if (sb_Comment.Length > 0) sb_Main.AppendLine(sb_Comment.ToString());
//            //Generate FK
//            DataTable dtFK = Globals.Reader2Table(SqlHelper.ExecuteReader(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], CommandType.Text, "SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE" + " WHERE TABLE_NAME='" + sTableName + "' AND CONSTRAINT_NAME LIKE 'FK_%'"));
//            string sFK = null;
//            foreach (DataRow drFK in dtFK.Rows)
//            {
//                sFK = drFK["CONSTRAINT_NAME"].ToString();
//                DataTable dtPK = Globals.Reader2Table(SqlHelper.ExecuteReader(System.Configuration.ConfigurationManager.AppSettings["WorkingConnect"], CommandType.Text, "SELECT A.*,B.DELETE_RULE FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE A " + " JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS B ON B.UNIQUE_CONSTRAINT_NAME=A.CONSTRAINT_NAME" + " WHERE B.CONSTRAINT_NAME='" + sFK + "'"));
//                DataRow drPK = dtPK.Rows[0];
//                string tablePK = drPK["Table_Name"].ToString();
//                //
//                sb_Main.AppendLine("ALTER TABLE " + sTableName);
//                sb_Main.AppendLine("ADD CONSTRAINT " + Globals.String_Abstract(sTableName + "_" + tablePK, 27, new string[] { "_" }) + "_FK FOREIGN KEY");
//                sb_Main.AppendLine("(" + drFK["Column_Name"] + ")");
//                sb_Main.AppendLine("REFERENCES " + tablePK);
//                sb_Main.AppendLine("(" + drPK["Column_Name"] + ")");
//                if (drPK["DELETE_RULE"].ToString() == "CASCADE")
//                {
//                    sb_Main.AppendLine("ON DELETE CASCADE ENABLE;");
//                }
//                else
//                {
//                    sb_Main.AppendLine("ENABLE;");
//                }
//                //
//                sb_Main.AppendLine("");
//            }
//            //
//            txtResult.Text = sb_Main.ToString();
//        }
//    }
//}